/**
 * https://mp.weixin.qq.com/* insert scripts
 * 配置页面工作脚本
 */

/**
 * 主函数
 */
function main(res)
{
  // 显示任务开始
  common.send({'func':'isNeedSetting'}, function(res){
    if (res.needSetting) {
      notiProcessStart(function(res){
        var weixinName = common.getWeixinName();
        var fakeid = getFakeId();
        var token  = common.getToken();
        var weixinavatar = '';
        common.getHeadImg(function(err, headData){
          if(err) {
            // 获取头像失败
          } else {
            weixinavatar = headData;
          }
        });
        
        if ( !weixinName || !fakeid ) {
          common.send({'func':'error', 'error_msg':'获取weixinname/fakeid失败'});
          return;
        }

        notiProcess(20);

        // 获取微信号 2013-11-18 change to id
        var weixin_account = '';
        $.each($('#settingArea li'), function(){
          var th = $(this).children('h4');
          if (!th.length) return true;
          if (th.text().trim() == '微信号' && $(this).children('.meta_content').text().trim()) {
            weixin_account = $(this).children('.meta_content').text().trim();
          }
        });

        notiProcess(30);

        var check_login_callback = function(is_force_config){

          notiProcess(50);

          getQr(fakeid, token, function(err, qr){
            notiProcess(60);
            if ( err ) {
              alert(err);
              return;
            }
            // 获取到图片数据
            common.send({
              'func': 'saveSettingData',
              'data': {
                'is_force_config': is_force_config ? 1 : 0,
                'weixin_account': weixin_account,
                'weixin_name': weixinName,
                'weixin_avatar': weixinavatar,
                'fakeid'     : fakeid,
                'token'      : token,
                'qr'         : qr['small'],
                'qr_middle'  : qr['middle'],
                'qr_big'     : qr['big']
              }
            }, function(res){
              if (!res.success) {
                alert(res.error_msg);
                return;
              }
              notiProcess(100);
              setTimeout(function(){
                notiClose();
                var token = common.getToken();
                window.location.href = 'https://mp.weixin.qq.com/cgi-bin/message?t=message/list&count=20&day=7&token='+token+'&lang=zh_CN';
              }, 1500);
            });
          });
        };

        // 检查公众账号是否匹配（2014-04-11）
        common.send({
          'func': 'check_account',
          'weixin_account': weixin_account,
          'weixin_name': weixinName,
          'fakeid'     : fakeid
          }, function(res){

          notiProcess(40);

          if(!res.success) {

            var confirmHtml = "您现在登录的微信公众账号为“"+weixinName+"”，但是申请时提交的绑定大屏幕的公众账号为“"+res.companyInfo.weixin_name+"”\n\n如果确定要绑定“"+weixinName+"”，请点击确定继续；\n\n如果需要绑定“"+res.companyInfo.weixin_name+"”，请点击取消，重新登录“"+res.companyInfo.weixin_name+"”的微信公众账号进行配置。";

            // 不匹配的提醒
            if(!confirm(confirmHtml)) {
              // @todo 自动退出？
              return;
            } else {
              check_login_callback(true);
            }
          } else {
            check_login_callback();
          }
        });
      });
    }
  });
}

/**
 * 通知开始执行配置
 * @param cb
 */
function notiProcessStart(cb)
{
  common.send({
    'func': 'showNoti',
    'id': 'setting_process',
    'cover': '/images/loading-small.gif',
    'title': '配置大屏幕',
    'content': '大屏幕正在配置所需要的数据，请稍等...[0%]'
  }, cb);
}

/**
 * 通知进度
 */
function notiProcess(num)
{
  if ( num < 100 ) {
    var content = '大屏幕正在配置所需要的数据，请稍等...['+num+'%]';
    var cover = '/images/loading-small.gif';
  } else {
    var content = '恭喜！配置成功，即将为您跳转...['+num+'%]';
    var cover = '/images/success-48.png';
  }
  common.send({
    'func': 'showNoti',
    'id': 'setting_process',
    'cover': cover,
    'title': '配置大屏幕',
    'content': content
  });
}

/**
 * 关闭通知
 */
function notiClose()
{
  common.send({
    'func': 'closeNoti',
    'id': 'setting_process'
  });
}

/**
 * 获取fakeid
 */
function getFakeId()
{
  var url = $('.account_info img.avatar').attr('src');
  urlArr = common.parseUrl(url);
  if ( urlArr.queryParams.fakeid ) {
    return urlArr.queryParams.fakeid;
  }
  return '';
}


/**
 * 获取二维码url
 */
function getQr(fakeid, token, cb)
{
  var tasks = [];
  tasks.push(function(callback){
    common.imageToData('https://mp.weixin.qq.com/misc/getqrcode?fakeid='+fakeid+'&token='+token+'&action=download&style=1&pixsize=224', callback)
  });
  tasks.push(function(callback){
    common.imageToData('https://mp.weixin.qq.com/misc/getqrcode?fakeid='+fakeid+'&token='+token+'&action=download&style=1&pixsize=336', callback);
  });
  tasks.push(function(callback){
    common.imageToData('https://mp.weixin.qq.com/misc/getqrcode?fakeid='+fakeid+'&token='+token+'&action=download&style=1&pixsize=420', callback);
  });
  // 并行获取
  async.parallel(tasks, function(err, data){
    if ( err ) {
      cb(err, null);
      return;
    }
    cb(null, {
      'small': data[0],
      'middle': data[1],
      'big': data[2]
    });
  });
}